package georeduy.clases;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Entity;
import javax.persistence.OneToMany;

import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

@Entity
public class Usuario implements Serializable 
{
	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY )
	@Column(name="ID" ,nullable=false )
	private Integer id;
	@Column(name = "nick",nullable=false , unique=true)
	private String nick;	
	@Column(name = "pass",nullable=false )
	private String pass;
	@Column(nullable=true)
	private String latitud = null;
	@Column(nullable=true)
	private String longitud = null;
	
	@ElementCollection
	@LazyCollection(LazyCollectionOption.FALSE)
	private List<String> notificacionesActivas;
	
	@ElementCollection
	@LazyCollection(LazyCollectionOption.FALSE)
	private List<String> categorias;
	
	@OneToMany //ej carga al mismo tiempo que trae el usuario de la base
	@LazyCollection(LazyCollectionOption.FALSE)
	private List<Usuario> contactos;
	
	@OneToMany(cascade = CascadeType.ALL)
	@LazyCollection(LazyCollectionOption.FALSE)
	private List<Notificacion> notificaciones;
	
	public Usuario() {
		super();
	}

	public String getPass() {
		return pass;
	}

	public void setPass(String pass) {
		this.pass = pass;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getNick() {
		return nick;
	}

	public void setNick(String nick) {
		this.nick = nick;
	}

	public List<Usuario> getContactos() {
		return contactos;
	}

	public void setContactos(List<Usuario> contactos) {
		this.contactos = contactos;
	}

	public List<Notificacion> getNotificaciones() {
		return notificaciones;
	}

	public void setNotificaciones(List<Notificacion> notificaciones) {
		this.notificaciones = notificaciones;
	}

	public List<String> getCategorias() {
		return categorias;
	}

	public void setCategorias(List<String> categorias) {
		this.categorias = categorias;
	}

	public List<String> getNotificacionesActivas() {
		return notificacionesActivas;
	}

	public void setNotificacionesActivas(List<String> notificacionesActivas) {
		this.notificacionesActivas = notificacionesActivas;
	}

	public String getLatitud() {
		return latitud;
	}

	public void setLatitud(String latitud) {
		this.latitud = latitud;
	}

	public String getLongitud() {
		return longitud;
	}

	public void setLongitud(String longitud) {
		this.longitud = longitud;
	}
	
	
}
